#ifndef __GENERIC_H__
#define __GENERIC_H__

typedef void (*generic_cons_fn)(void *ele_ptr); // 对象构造函数
typedef void (*generic_free_fn)(void *ele_ptr);
typedef void (*generic_copy_fn)(const void *src, void *dst);
typedef int (*generic_compare_fn)(const void *a, const void *b);

#define PAIR(Type1, Type2, ID) \
    typedef struct ID          \
    {                          \
        Type1 first;           \
        Type2 second;          \
    } ID;

#endif